import React from 'react'
import styles from './Line.css'
import Highcharts from 'highcharts-release'
// import R from 'ramda'
// import theme from './theme.js'

type Props = {
  xData: Array,
  chartData: Array,
  chartAllData: Array,
  title: String,
  yTitle: String
}
class Line extends React.Component {
  props: Props

  componentDidMount () {
    this.draw(this.props)
  }

  componentDidUpdate () {
    this.draw(this.props)
  }
  // componentWillReceiveProps (nextProps) {
  //   if (!R.equals(nextProps, this.props)) {
  //     this.draw(nextProps)
  //   }
  // }
  draw (props) {
    const container = this.refs.container
    // const { chartAllData } = this.props
    let innerChart = Highcharts.chart(container, {
      colors: ['#7CB5EC', '#FFBC83', '#6CB25F'],
      chart: {
        backgroundColor: 'transparent'
      },
      title: {
        text: this.props.title,
        x: -20
      },
      tooltip: {
        shared: true,
        formatter: function () {
          if (this.points.length === 2) {
            return this.x + '<br>' +
                  '故障频次:' + this.points[0].y + '/' + this.points[1].y
          } else if (this.points.length === 1) {
            return this.x + '<br>' +
                  '故障频次:' + '0 /' + this.points[0].y
          } else {
            return this.x + '<br>' +
                  '故障频次:' + this.y
          }
        }
      },
      // tooltip : {
      //   formatter: function () {
      //     let allCount = chartAllData.map((d, i) => {
      //       if (this.x === d.eventType) {
      //         return d.count
      //       }
      //     })
      //     for (let i = 0; i < allCount.length; i++) {
      //       if (allCount[i] === '' || typeof (allCount[i]) === 'undefined') {
      //         allCount.splice(i, 1)
      //         i = i - 1
      //       }
      //     }
      //     return this.x + '<br>' +
      //       this.series.name + ':' + this.y + '/' + allCount
      //   }
      // },
      credits:{
        enabled: false
      },
      legend: {
        enabled: true,
        layout: 'vertical',
        align: 'left',
        verticalAlign: 'top',
        x: 40,
        y: 0,
        floating: true
      },
      xAxis: {
        categories: this.props.xData
      },
      yAxis: {
        title: {
          text: this.props.yTitle
        },
        plotLines: [{
          value: 0,
          width: 1,
          color: '#808080'
        }]
      },
      plotOptions: {
        line: {
          lineWidth: 1,
          dataGrouping: {
            enabled: false
          }
        },
        series: {
          maxPointWidth: 100,
          dataLabels: {
            enabled: true
          }
        }
      },
      dataZoom: [
        {
          type: 'inside'
        }
      ],
      series: this.props.chartData
    })
    setTimeout(() => {
      if (innerChart) {
        innerChart.reflow()
      }
    }, 5)
  }

  render () {
    return (
      <div ref='container' className={styles['container']} />
    )
  }
}
export default Line
